package com.kenai.jbosh;

import java.lang.ref.SoftReference;
import java.util.logging.Logger;
import org.xmlpull.v1.XmlPullParser;

final class BodyParserXmlPull
  implements BodyParser
{
  private static final Logger LOG = Logger.getLogger(BodyParserXmlPull.class.getName());
  private static final ThreadLocal<SoftReference<XmlPullParser>> XPP_PARSER = new ThreadLocal()
  {
    protected SoftReference<XmlPullParser> initialValue()
    {
      return new SoftReference(null);
    }
  };

  // ERROR //
  private static XmlPullParser getXmlPullParser()
  {
    // Byte code:
    //   0: getstatic 34	com/kenai/jbosh/BodyParserXmlPull:XPP_PARSER	Ljava/lang/ThreadLocal;
    //   3: invokevirtual 45	java/lang/ThreadLocal:get	()Ljava/lang/Object;
    //   6: checkcast 47	java/lang/ref/SoftReference
    //   9: invokevirtual 48	java/lang/ref/SoftReference:get	()Ljava/lang/Object;
    //   12: checkcast 50	org/xmlpull/v1/XmlPullParser
    //   15: astore_0
    //   16: aload_0
    //   17: ifnonnull +65 -> 82
    //   20: invokestatic 56	org/xmlpull/v1/XmlPullParserFactory:newInstance	()Lorg/xmlpull/v1/XmlPullParserFactory;
    //   23: astore 4
    //   25: aload 4
    //   27: iconst_1
    //   28: invokevirtual 60	org/xmlpull/v1/XmlPullParserFactory:setNamespaceAware	(Z)V
    //   31: aload 4
    //   33: iconst_0
    //   34: invokevirtual 63	org/xmlpull/v1/XmlPullParserFactory:setValidating	(Z)V
    //   37: aload 4
    //   39: invokevirtual 66	org/xmlpull/v1/XmlPullParserFactory:newPullParser	()Lorg/xmlpull/v1/XmlPullParser;
    //   42: astore 5
    //   44: new 47	java/lang/ref/SoftReference
    //   47: dup
    //   48: aload 5
    //   50: invokespecial 69	java/lang/ref/SoftReference:<init>	(Ljava/lang/Object;)V
    //   53: astore 6
    //   55: getstatic 34	com/kenai/jbosh/BodyParserXmlPull:XPP_PARSER	Ljava/lang/ThreadLocal;
    //   58: aload 6
    //   60: invokevirtual 72	java/lang/ThreadLocal:set	(Ljava/lang/Object;)V
    //   63: aload 5
    //   65: astore_1
    //   66: aload_1
    //   67: areturn
    //   68: astore_2
    //   69: aload_2
    //   70: astore_3
    //   71: new 74	java/lang/IllegalStateException
    //   74: dup
    //   75: ldc 76
    //   77: aload_3
    //   78: invokespecial 79	java/lang/IllegalStateException:<init>	(Ljava/lang/String;Ljava/lang/Throwable;)V
    //   81: athrow
    //   82: aload_0
    //   83: astore_1
    //   84: goto -18 -> 66
    //   87: astore 7
    //   89: aload 7
    //   91: astore_3
    //   92: goto -21 -> 71
    //
    // Exception table:
    //   from	to	target	type
    //   20	55	68	java/lang/Exception
    //   55	63	87	java/lang/Exception
  }

  // ERROR //
  public BodyParserResults parse(java.lang.String paramString)
    throws com.kenai.jbosh.BOSHException
  {
    // Byte code:
    //   0: new 91	com/kenai/jbosh/BodyParserResults
    //   3: dup
    //   4: invokespecial 92	com/kenai/jbosh/BodyParserResults:<init>	()V
    //   7: astore_2
    //   8: invokestatic 94	com/kenai/jbosh/BodyParserXmlPull:getXmlPullParser	()Lorg/xmlpull/v1/XmlPullParser;
    //   11: astore 8
    //   13: new 96	java/io/StringReader
    //   16: dup
    //   17: aload_1
    //   18: invokespecial 99	java/io/StringReader:<init>	(Ljava/lang/String;)V
    //   21: astore 9
    //   23: aload 8
    //   25: aload 9
    //   27: invokeinterface 103 2 0
    //   32: aload 8
    //   34: invokeinterface 107 1 0
    //   39: istore 10
    //   41: goto +506 -> 547
    //   44: iload 10
    //   46: iconst_2
    //   47: if_icmpne +300 -> 347
    //   50: getstatic 29	com/kenai/jbosh/BodyParserXmlPull:LOG	Ljava/util/logging/Logger;
    //   53: getstatic 113	java/util/logging/Level:FINEST	Ljava/util/logging/Level;
    //   56: invokevirtual 117	java/util/logging/Logger:isLoggable	(Ljava/util/logging/Level;)Z
    //   59: ifeq +31 -> 90
    //   62: getstatic 29	com/kenai/jbosh/BodyParserXmlPull:LOG	Ljava/util/logging/Logger;
    //   65: new 119	java/lang/StringBuilder
    //   68: dup
    //   69: ldc 121
    //   71: invokespecial 122	java/lang/StringBuilder:<init>	(Ljava/lang/String;)V
    //   74: aload 8
    //   76: invokeinterface 123 1 0
    //   81: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   84: invokevirtual 130	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   87: invokevirtual 133	java/util/logging/Logger:finest	(Ljava/lang/String;)V
    //   90: aload 8
    //   92: invokeinterface 136 1 0
    //   97: astore 11
    //   99: aload 11
    //   101: ifnonnull +7 -> 108
    //   104: ldc 138
    //   106: astore 11
    //   108: aload 8
    //   110: invokeinterface 141 1 0
    //   115: astore 12
    //   117: aload 8
    //   119: invokeinterface 123 1 0
    //   124: astore 13
    //   126: new 143	com/kenai/jbosh/QName
    //   129: dup
    //   130: aload 12
    //   132: aload 13
    //   134: aload 11
    //   136: invokespecial 146	com/kenai/jbosh/QName:<init>	(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    //   139: astore 14
    //   141: getstatic 29	com/kenai/jbosh/BodyParserXmlPull:LOG	Ljava/util/logging/Logger;
    //   144: getstatic 113	java/util/logging/Level:FINEST	Ljava/util/logging/Level;
    //   147: invokevirtual 117	java/util/logging/Logger:isLoggable	(Ljava/util/logging/Level;)Z
    //   150: ifeq +80 -> 230
    //   153: getstatic 29	com/kenai/jbosh/BodyParserXmlPull:LOG	Ljava/util/logging/Logger;
    //   156: ldc 148
    //   158: invokevirtual 133	java/util/logging/Logger:finest	(Ljava/lang/String;)V
    //   161: getstatic 29	com/kenai/jbosh/BodyParserXmlPull:LOG	Ljava/util/logging/Logger;
    //   164: new 119	java/lang/StringBuilder
    //   167: dup
    //   168: ldc 150
    //   170: invokespecial 122	java/lang/StringBuilder:<init>	(Ljava/lang/String;)V
    //   173: aload 11
    //   175: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   178: invokevirtual 130	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   181: invokevirtual 133	java/util/logging/Logger:finest	(Ljava/lang/String;)V
    //   184: getstatic 29	com/kenai/jbosh/BodyParserXmlPull:LOG	Ljava/util/logging/Logger;
    //   187: new 119	java/lang/StringBuilder
    //   190: dup
    //   191: ldc 152
    //   193: invokespecial 122	java/lang/StringBuilder:<init>	(Ljava/lang/String;)V
    //   196: aload 12
    //   198: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   201: invokevirtual 130	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   204: invokevirtual 133	java/util/logging/Logger:finest	(Ljava/lang/String;)V
    //   207: getstatic 29	com/kenai/jbosh/BodyParserXmlPull:LOG	Ljava/util/logging/Logger;
    //   210: new 119	java/lang/StringBuilder
    //   213: dup
    //   214: ldc 154
    //   216: invokespecial 122	java/lang/StringBuilder:<init>	(Ljava/lang/String;)V
    //   219: aload 13
    //   221: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   224: invokevirtual 130	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   227: invokevirtual 133	java/util/logging/Logger:finest	(Ljava/lang/String;)V
    //   230: invokestatic 160	com/kenai/jbosh/AbstractBody:getBodyQName	()Lcom/kenai/jbosh/BodyQName;
    //   233: astore 15
    //   235: aload 15
    //   237: aload 14
    //   239: invokevirtual 166	com/kenai/jbosh/BodyQName:equalsQName	(Lcom/kenai/jbosh/QName;)Z
    //   242: ifne +313 -> 555
    //   245: new 74	java/lang/IllegalStateException
    //   248: dup
    //   249: new 119	java/lang/StringBuilder
    //   252: dup
    //   253: ldc 168
    //   255: invokespecial 122	java/lang/StringBuilder:<init>	(Ljava/lang/String;)V
    //   258: aload 15
    //   260: invokevirtual 171	com/kenai/jbosh/BodyQName:getLocalPart	()Ljava/lang/String;
    //   263: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   266: ldc 173
    //   268: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   271: aload 15
    //   273: invokevirtual 176	com/kenai/jbosh/BodyQName:getNamespaceURI	()Ljava/lang/String;
    //   276: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   279: ldc 178
    //   281: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   284: aload 13
    //   286: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   289: ldc 180
    //   291: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   294: aload 12
    //   296: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   299: ldc 182
    //   301: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   304: invokevirtual 130	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   307: invokespecial 183	java/lang/IllegalStateException:<init>	(Ljava/lang/String;)V
    //   310: athrow
    //   311: astore 7
    //   313: aload 7
    //   315: astore 4
    //   317: new 83	com.kenai.jbosh.BOSHException
    //   320: dup
    //   321: new 119	java/lang/StringBuilder
    //   324: dup
    //   325: ldc 185
    //   327: invokespecial 122	java/lang/StringBuilder:<init>	(Ljava/lang/String;)V
    //   330: aload_1
    //   331: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   334: invokevirtual 130	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   337: aload 4
    //   339: invokespecial 186	com.kenai.jbosh.BOSHException:<init>	(Ljava/lang/String;Ljava/lang/Throwable;)V
    //   342: astore 5
    //   344: aload 5
    //   346: athrow
    //   347: aload 8
    //   349: invokeinterface 189 1 0
    //   354: istore 10
    //   356: goto +191 -> 547
    //   359: aload 8
    //   361: invokeinterface 192 1 0
    //   366: istore 17
    //   368: iload 16
    //   370: iload 17
    //   372: if_icmpge +181 -> 553
    //   375: aload 8
    //   377: iload 16
    //   379: invokeinterface 196 2 0
    //   384: astore 18
    //   386: aload 18
    //   388: invokevirtual 201	java/lang/String:length	()I
    //   391: ifne +13 -> 404
    //   394: aload 8
    //   396: aconst_null
    //   397: invokeinterface 204 2 0
    //   402: astore 18
    //   404: aload 8
    //   406: iload 16
    //   408: invokeinterface 207 2 0
    //   413: astore 19
    //   415: aload 19
    //   417: ifnonnull +7 -> 424
    //   420: ldc 138
    //   422: astore 19
    //   424: aload 8
    //   426: iload 16
    //   428: invokeinterface 210 2 0
    //   433: astore 20
    //   435: aload 8
    //   437: iload 16
    //   439: invokeinterface 213 2 0
    //   444: astore 21
    //   446: aload 18
    //   448: aload 20
    //   450: aload 19
    //   452: invokestatic 217	com/kenai/jbosh/BodyQName:createWithPrefix	(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/kenai/jbosh/BodyQName;
    //   455: astore 22
    //   457: getstatic 29	com/kenai/jbosh/BodyParserXmlPull:LOG	Ljava/util/logging/Logger;
    //   460: getstatic 113	java/util/logging/Level:FINEST	Ljava/util/logging/Level;
    //   463: invokevirtual 117	java/util/logging/Logger:isLoggable	(Ljava/util/logging/Level;)Z
    //   466: ifeq +51 -> 517
    //   469: getstatic 29	com/kenai/jbosh/BodyParserXmlPull:LOG	Ljava/util/logging/Logger;
    //   472: new 119	java/lang/StringBuilder
    //   475: dup
    //   476: ldc 219
    //   478: invokespecial 122	java/lang/StringBuilder:<init>	(Ljava/lang/String;)V
    //   481: aload 18
    //   483: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   486: ldc 221
    //   488: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   491: aload 20
    //   493: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   496: ldc 223
    //   498: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   501: aload 21
    //   503: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   506: ldc 225
    //   508: invokevirtual 127	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   511: invokevirtual 130	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   514: invokevirtual 133	java/util/logging/Logger:finest	(Ljava/lang/String;)V
    //   517: aload_2
    //   518: aload 22
    //   520: aload 21
    //   522: invokevirtual 229	com/kenai/jbosh/BodyParserResults:addBodyAttributeValue	(Lcom/kenai/jbosh/BodyQName;Ljava/lang/String;)V
    //   525: iinc 16 1
    //   528: goto -169 -> 359
    //   531: astore 6
    //   533: aload 6
    //   535: astore 4
    //   537: goto -220 -> 317
    //   540: astore_3
    //   541: aload_3
    //   542: astore 4
    //   544: goto -227 -> 317
    //   547: iload 10
    //   549: iconst_1
    //   550: if_icmpne -506 -> 44
    //   553: aload_2
    //   554: areturn
    //   555: iconst_0
    //   556: istore 16
    //   558: goto -199 -> 359
    //
    // Exception table:
    //   from	to	target	type
    //   8	311	311	java/lang/RuntimeException
    //   347	525	311	java/lang/RuntimeException
    //   8	311	531	org/xmlpull/v1/XmlPullParserException
    //   347	525	531	org/xmlpull/v1/XmlPullParserException
    //   8	311	540	java/io/IOException
    //   347	525	540	java/io/IOException
  }
}